package educar.models;



import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import educar.db.JPA;
import educar.models.Persona;

public class Alumno implements Persona{
	private static JPA jpa = new JPA();

	private String nombre;
	private String apellido;
	private String dni;
	private String direccion;
	private String telefono;
	private String email;
	
	public Alumno(){}
	
	public Alumno(String dni){
		this.setDni(dni);
	}
	
	public Alumno(String dni, String nombre, String apellido, String direccion, String telefono, String email){
		this.setNombre(nombre);
		this.setApellido(apellido);
		this.setDni(dni);
		this.setDireccion(direccion);
		this.setTelefono(telefono);
		this.setEmail(email);
	}
	
	public static boolean authenticate(String dni) {
		try {
			Alumno p = getAlumnoByAlumno(dni);

			if (dni.equals(p.getDni())) {
				SessionAlumno.setCurrentAlumno(p);
				return true;
			}
		} catch (personaNotFound ex) {
			return false;
		}

		return false;
	}

	public boolean save() {
		try {
			Alumno.getAlumnoByAlumno(dni);
			return false;
		} catch (personaNotFound e1) {
			String[] columns = {"dni","nombre", "apellido" ,"direccion","telefono", "email"};
			PreparedStatement stm = jpa.newRecord("educar_dev.persona", columns);
			
			String [] columna = {"dni"};
			PreparedStatement stm2 = jpa.newRecord("educar_dev.alumno", columna);
			
			try {
				stm.setString(1, dni);
				stm.setString(2, nombre);
				stm.setString(3, apellido);
				stm.setString(4, direccion);
				stm.setString(5, telefono);
				stm.setString(6, email);
				
				stm2.setString(1, dni);
			} catch (SQLException e) {
				e.printStackTrace();
				return false;
			}

			jpa.create(stm);//almacena en la tabla persona
			jpa.create(stm2);//almacena en la tabla alumno
			return true;
		}
	}
	
	

	public void destroy() {
		jpa.destroy("persona", "dni", this.getDni());
	}

	public static Alumno getAlumnoByAlumno(String dni) throws personaNotFound {
		ResultSet rs = null;
		Alumno p = null;

		rs = jpa.getByField("persona", "dni", dni);

		try {
			if (rs.next()) {
				p = new Alumno(rs.getString(1), rs.getString(3), rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7));
			} else {
				throw new personaNotFound();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return p;
	}

	
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	
	
	public String getDni() {
		return dni;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}
	
	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

}
